﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using QLTV.Public;
using QLTV.DAL;
using QLTV.BLL;
using QLTV.GUI.Forms;

namespace QLTV.GUI.UserControl
{
    public partial class ucPhieuTraSach : DevExpress.XtraEditors.XtraUserControl
    {
        PhieuSachBLL psBLL;
        PhieuSachDTO psDTO;
        DocGiaDTO dgDTO;
        QuyDinhBLL qdBLL = new QuyDinhBLL();

        public ucPhieuTraSach()
        {
            InitializeComponent();
        }
        //sự kiện click của nút tìm độc giả
        private void btnTimDocGia_Click(object sender, EventArgs e)
        {
            if (txtMaDG.Text == "")
            {
                XtraMessageBox.Show("Bạn chưa nhập mã độc giả!");
                return;
            }
            else
            {
                lammoi();
                psDTO = new PhieuSachDTO();
                dgDTO = new DocGiaDTO();
                psBLL = new PhieuSachBLL();
                dgDTO.MaDG = txtMaDG.Text.ToString().Trim();
                DataTable dtTable = psBLL.PhieuTraSach_TimDocGia_MaDG(dgDTO);
                if (dtTable.Rows.Count == 0)
                {
                    XtraMessageBox.Show("Mã độc giả không tồn tại!");
                    return;
                }
                else
                {
                    txtHoTenDG.DataBindings.Add("Text", dtTable, "HoVaTen");
                    txtLoaiDG.DataBindings.Add("Text", dtTable, "TenLDG");
                    string t = dtTable.Rows[0]["GioiTinh"].ToString();
                    if (t == "True")
                    {
                        txtGioiTinhDG.Text = "Nữ";
                    }
                    else txtGioiTinhDG.Text = "Nam";
                    txtDiaChi.DataBindings.Add("Text", dtTable, "DiaChi");
                    txtEmail.DataBindings.Add("Text", dtTable, "Email");

                    psDTO.MaDG = txtMaDG.Text.ToString().Trim();
                    //tìm phiếu sách dựa vào mã độc giả
                    DataTable dt = psBLL.PhieuTraSach_TimPhieuSach_MaDG(psDTO);
                    if (dt.Rows.Count == 0)
                    {
                        XtraMessageBox.Show("Độc giả không mượn sách!");
                    }
                    else
                    {
                        txtNgayMuon.DataBindings.Add("Text", dt, "NgayMuon", true, System.Windows.Forms.DataSourceUpdateMode.Never, null, "d");
                        DateTime dtime = Convert.ToDateTime(txtNgayMuon.Text.ToString());
                        //quy định
                        DataTable qdQuyDinh = qdBLL.QuyDinh_LoadDuLieu();
                        txtHanTra.Text = dtime.AddDays(Convert.ToInt16(qdQuyDinh.Rows[5]["GiaTri"])).ToString("dd/MM/yyyy");
                        txtNgayTra.Text = DateTime.Now.ToString("dd/MM/yyyy");

                        txtTienNoKyNay.DataBindings.Add("Text", dt, "TienNoKyNay");
                        PhieuSachDTO psDT = new PhieuSachDTO();
                        psDT.MaDG = ("" + txtMaDG.Text.ToString().Trim() + "");
                        //hiển thị những cuốn sách được mượn theo mã độc giả
                        DataTable da = psBLL.PhieuTraSach_HienSachTra_MaDG(psDT);
                        gridControl1.DataSource = da;
                        int tienphat = 0;
                        for (int i = 0; i < grdSachTra.RowCount; i++)
                        {
                            tienphat += Convert.ToInt32(grdSachTra.GetRowCellValue(i, "TienPhat"));
                        }
                        txtTienPhatKyNay.Text = tienphat.ToString();

                        txtTongNo.Text = (Convert.ToInt32(txtTienPhatKyNay.Text.ToString()) + Convert.ToInt32(txtTienNoKyNay.Text.ToString().Replace(",", ""))).ToString();
                    }
                }
                enableButton();
            }
        }

        void enableButton()
        {
            //if (grdThemSach.RowCount > 0)
            //{
            //    btnXoa.Enabled = true;
            //}
            //else btnXoa.Enabled = false;
            if (txtHoTenDG.Text != "" && txtNgayMuon.Text != "")
            {
                btnNhanTra.Enabled = true;
                btnTraTien.Enabled = true;
            }
            else
            {
                btnNhanTra.Enabled = true;
                btnTraTien.Enabled = true;

            }
        }
        private void lammoiDocGia()
        {
            txtHoTenDG.DataBindings.Clear();
            txtLoaiDG.DataBindings.Clear();
            txtGioiTinhDG.DataBindings.Clear();
            //txtNgaySinh.DataBindings.Clear();
            //txtDiaChiDG.DataBindings.Clear();
            //txtEmailDG.DataBindings.Clear();
            //txtNgayLapThe.DataBindings.Clear();
            //txtNgayHetHan.DataBindings.Clear();
        }
        //sự kiện click của nút trả sách và trả tiền phạt
        private void btnTraTien_Click(object sender, EventArgs e)
        {

            if (string.IsNullOrEmpty(txtMaDG.Text.ToString()))
            {
                XtraMessageBox.Show("Bạn chưa nhập mã độc giả! Hãy nhập và tìm!");
            }
            else
            {
                psDTO.MaDG = txtMaDG.Text.ToString();
                DataTable dtTable = psBLL.PhieuTraSach_TimPhieuSach_MaDG(psDTO);
                DataTable da = psBLL.PhieuTraSach_HienSachTra_MaDG(psDTO);
                psDTO.MaPhieu = dtTable.Rows[0]["MaPhieu"].ToString();
                frmPhieuThuTienPhat fPTTP = new frmPhieuThuTienPhat(psDTO.MaDG.ToString(), psDTO.MaPhieu.ToString(), txtHoTenDG.Text.ToString(), txtTongNo.Text.ToString(), DateTime.Parse(txtNgayTra.Text), da.Rows[0]["SoNgayMuon"].ToString(), decimal.Parse(txtTienPhatKyNay.Text.ToString()));
                fPTTP.ShowDialog();
            }

        }
        //sự kiện click của nút trả sách
        private void btnNhanTra_Click(object sender, EventArgs e)
        {
            psDTO = new PhieuSachDTO();

            PhieuSachDTO psDT = new PhieuSachDTO();
            psDT.MaDG = ("" + txtMaDG.Text.ToString().Trim() + "");
            DataTable da = psBLL.PhieuTraSach_HienSachTra_MaDG(psDT);

            psDTO.MaDG = ("" + txtMaDG.Text.ToString().Trim() + "");
            psDTO.NgayTra = DateTime.Parse(txtNgayTra.Text);
            psDTO.SoNgayMuon = da.Rows[0]["SoNgayMuon"].ToString();
            psDTO.TienPhatKyNay = decimal.Parse(txtTienPhatKyNay.Text.ToString());
            psDTO.SoTienThu = 0;

            DataTable dtTable = psBLL.PhieuTraSach_TimPhieuSach_MaDG(psDTO);
            psDTO.MaPhieu = dtTable.Rows[0]["MaPhieu"].ToString();
            psBLL.NhanTraSach(psDTO);
            XtraMessageBox.Show("Trả sách thành công!");
            loadUC();
            //da.Clear();
        }
        void loadUC()
        {
            gridControl1.DataSource = null;
            txtDiaChi.Text = "";
            txtEmail.Text = "";
            txtGioiTinhDG.Text = "";
            txtHoTenDG.Text = "";
            txtLoaiDG.Text = "";
            txtMaDG.Text = "";
            txtNgayMuon.Text = "";
            txtHanTra.Text = "";
            txtNgayTra.Text = "";
            txtTienPhatKyNay.Text = "";
            txtTienNoKyNay.Text = "";
            txtTongNo.Text = "";

            btnNhanTra.Enabled = false;
            btnTraTien.Enabled = false;
        }
        private void lammoi()
        {
            txtHoTenDG.DataBindings.Clear();
            txtLoaiDG.DataBindings.Clear();
            txtGioiTinhDG.DataBindings.Clear();
            txtDiaChi.DataBindings.Clear();
            txtEmail.DataBindings.Clear();
            txtNgayMuon.DataBindings.Clear();
            txtHanTra.DataBindings.Clear();
            txtNgayTra.DataBindings.Clear();
            txtTienPhatKyNay.DataBindings.Clear();
            txtTienNoKyNay.DataBindings.Clear();
            txtTongNo.DataBindings.Clear();
        }

        private void txtMaDG_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.KeyChar = Convert.ToChar(e.KeyChar.ToString().ToUpper());
        }

        private void grdSachTra_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
        {
            if (e.Column == colSTT)
            {
                e.DisplayText = Convert.ToString(e.RowHandle + 1);
            }
        }

        private void ucPhieuTraSach_Load(object sender, EventArgs e)
        {
            loadUC();
        }
    }
}
